package com.sh.rbac.domain.converter;

import com.sh.rbac.domain.dto.dept.DeptSaveDTO;
import com.sh.rbac.domain.dto.dept.DeptUpdateDTO;
import com.sh.rbac.domain.entity.Dept;
import com.sh.rbac.domain.vo.dept.DeptVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 部门对象转换器
 *
 * @author wb
 * @since 2025-05-19
 */

@Mapper
public interface DeptConverter {

    DeptConverter INSTANCE = Mappers.getMapper(DeptConverter.class);


    /**
     * 将部门保存参数转换成部门对象
     *
     * @param deptSaveDTO 部门保存参数
     * @return 部门对象
     */
    Dept toEntity(DeptSaveDTO deptSaveDTO);


    /**
     * 将部门更新参数转换成部门对象
     *
     * @param deptUpdateDTO 部门更新参数
     * @return 部门对象
     */
    Dept toEntity(DeptUpdateDTO deptUpdateDTO);


    /**
     * 将 Dept 转换为 VO 对象
     *
     * @param dept 部门
     * @return 部门VO
     */
    DeptVO toVO(Dept dept);


    /**
     * 将 Dept 列表转换为 VO 列表
     *
     * @param depts 部门列表
     * @return 部门VO列表
     */
    List<DeptVO> toVoList(List<Dept> depts);
}
